As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies such as cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources.
The amount of resources needed by a customer can change over time. For example, the customer might require additional processing capacity for various applications, or might require additional storage capacity for customer data. Currently, the management of such resources is a manual procedure, which requires a database administrator (DBA) or other such operator to view statistics and usage data by customer, and determine when to request that the customer authorize an increase or decrease in allocated capacity. When receiving a request from a customer to adjust a capacity, the DBA must determine the appropriate type of adjustment and perform the adjustment. Often, this requires taking down a data store for the customer for a period of time necessary to make the adjustment. Further, such an approach can be reactive, in that a customer will not know that an increase is needed until the capacity for the customer is full or exceeded.